#include <stdio.h>
#include <limits.h>

void main()
{
    // 整数类型
    int a = 10;                    // 基本整数类型，通常4字节
    char b = 'A';                  // 字符类型，1字节
    short c = 100;                 // 短整型，通常2字节
    long d = 1000000L;             // 长整型，通常4或8字节
    long long e = 1000000000000LL; // 更长的整型，通常8字节

    // 浮点数类型
    float f = 3.14f;                                    // 单精度浮点数，通常4字节
    double g = 3.141592653589793;                       // 双精度浮点数，通常8字节
    long double h = 3.1415926535897932384626433832795L; // 扩展精度浮点数，长度因平台而异

    // 输出格式化
    printf("int a = %d, sizeof(int) = %zu bytes\n", a, sizeof(a));
    printf("char b = %c, sizeof(char) = %zu bytes\n", b, sizeof(b));
    printf("short c = %hd, sizeof(short) = %zu bytes\n", c, sizeof(c));
    printf("long d = %ld, sizeof(long) = %zu bytes\n", d, sizeof(d));
    printf("long long e = %lld, sizeof(long long) = %zu bytes\n", e, sizeof(e));
    printf("float f = %f, sizeof(float) = %zu bytes\n", f, sizeof(f));
    printf("double g = %lf, sizeof(double) = %zu bytes\n", g, sizeof(g));
    printf("long double h = %Lf, sizeof(long double) = %zu bytes\n", h, sizeof(h));

    // 整数类型的极限值
    printf("INT_MIN = %d, INT_MAX = %d\n", INT_MIN, INT_MAX);
    printf("CHAR_MIN = %d, CHAR_MAX = %d\n", CHAR_MIN, CHAR_MAX);
    printf("SHRT_MIN = %d, SHRT_MAX = %d\n", SHRT_MIN, SHRT_MAX);
    printf("LONG_MIN = %ld, LONG_MAX = %ld\n", LONG_MIN, LONG_MAX);
    printf("LLONG_MIN = %lld, LLONG_MAX = %lld\n", LLONG_MIN, LLONG_MAX);

    // 整数的进制
    int num = 255;
    int num1 = 0x1A2B;                // 十六进制表示
    int num2 = 01;                    // 八进制表示
    printf("Decimal: %d\n", num);     // 十进制
    printf("Hexadecimal: %x\n", num); // 十六进制
    printf("Octal: %o\n", num);       // 八进制
}